﻿using System;
using System.Data;


namespace TwinHead.Database
{
    /// <summary>
    /// 데이터베이스에 접속하여 질의를 요청하는 처리자에 대한 표준 인터페이스 입니다.
    /// </summary>
    interface IDatabaseConnector : IDisposable
    {
        /// <summary>
        /// 데이터베이스와의 접속객체를 제공하는 Provider를 식별하는 문자열을 설정하거나 가져옵니다.
        /// </summary>
        string Provider { get; set; }

        /// <summary>
        /// 데이터베이스와의 접속을 열기위한 문자열을 설정하거나 가져옵니다
        /// </summary>
        string ConnectionString { get; set; }

        /// <summary>
        /// 명령을 처리하는데 대기할 최대 시간
        /// </summary>
        int CommandTimeOut { get; set; }

        /// <summary>
        /// 실행하고자 하는 쿼리를 설정하거나 가져옵니다
        /// </summary>
        string SQL { get; set; }

        /// <summary>
        /// 데이터 셋을 반환합니다.
        /// </summary>
        /// <returns></returns>
        DataSet GetDataSet();

        /// <summary>
        /// 현재 요청을 취소합니다
        /// </summary>
        void Abort();
    }
}
